工程二字目前用得十分广泛,以至它的实质含义常常被人们忽略了。工程本是指应用科学知识使自然资源最佳地为人类服务的一种专门技术。在人类发明的过程中,工程常常是指复杂的、需要认真组织的、有许多人参加的事情。比如一个手工工匠生产出十分精巧的手工艺品,我们可以称之为工艺或技艺;反之,一条现代化的生产线,按照一定的规则或程序,每天都生产成批的产品,尽管它们不如手工工匠的产品精巧,但是都能达到某个一定的标准,且可以大批量地、以极低的成本生产,这就是工程。因此我们认为,工程的观点是和近现代的大生产联系在一起的,它是和依靠个人技艺的手工的生产方式相对立的。人类的生产从靠工匠手艺到靠工程化生产是一个重要的进步。
这个思想正是软件工程思想的由来。由于软件危机的发生,人们认识到,把软件的质量寄托于各个程序员的技能与认真负责是不牢靠的、危险的、不现实的。要想大幅度地从根本上提高软件开发的效率和质量,就应当吸取人们在各种传统产业中的成功经验,从组织和管理的角度加强力量,使软件生产从程序员的个人劳动提高成为有组织的、可控制的工程,这就产生了软件工程。
软件工程最初的重点自然是着眼于提高程序员的工作效率。于是开发了形形色色的软件工具(编辑、编译、跟踪、源程序分析、反汇编、反编译等等)。随后把零散的工具归拢起来成为在一定程度上配套的工具箱。再后来又增加了文件管理、数据库支持、版本管理、软件配置管理等功能,逐步形成了所谓的软件工程环境。